package process

import (
	"encoding/json"
	"fmt"
	"go_example/src/chatroom/client/utils"
	"go_example/src/chatroom/common/message"
)

//短信处理
type SmsProcess struct {

}

//处理用户退出消息
func (this *SmsProcess) SendExitMes(userId int)  {
	var mes message.Message
	mes.Type = message.SmsExitMesType

	var smsMes message.SmsExitMes
	smsMes.ExitId = userId

	smsMes.UserId = CurUser.UserId
	smsMes.UserStatus = CurUser.UserStatus
	//将smsMes序列化
	data, err := json.Marshal(smsMes)
	if err != nil {
		fmt.Println("SendExitMes() smsMes json.Marshal err=", err)
		return
	}
	mes.Data = string(data)

	//对mes再次序列化
	data, err = json.Marshal(mes)
	if err != nil {
		fmt.Println("SendExitMes() mes json.Marshal err=", err)
		return
	}

	//将mes发送给服务端
	tf := &utils.Transfer{
		Conn: CurUser.Conn,
	}
	err = tf.WritePkg(data)
	if err != nil {
		fmt.Println("SendExitMes() tf.WritePkg err=", err)
		return
	}
	return
}

//处理私发消息
func (this *SmsProcess) SendUserIdMes(content string, contextId int)  {
	//创建一个Mes
	var mes message.Message
	mes.Type = message.SmsUserIdMesType

	//创建一个SmsMes实例
	var smsMes message.SmsUserIdMes
	smsMes.Context = content //赋值内容
	smsMes.ContextId = contextId

	smsMes.UserId = CurUser.UserId
	smsMes.UserStatus = CurUser.UserStatus

	//将smsMes序列化
	data, err := json.Marshal(smsMes)
	if err != nil {
		fmt.Println("SendGroupMes() smsMes json.Marshal err=", err)
		return
	}
	mes.Data = string(data)

	//对mes再次序列化
	data, err = json.Marshal(mes)
	if err != nil {
		fmt.Println("SendGroupMes() mes json.Marshal err=", err)
		return
	}

	//将mes发送给服务端
	tf := &utils.Transfer{
		Conn: CurUser.Conn,
	}
	err = tf.WritePkg(data)
	if err != nil {
		fmt.Println("SendGroupMes() tf.WritePkg err=", err)
		return
	}
	return
}

//发送群聊的消息
func (this *SmsProcess) SendGroupMes(content string) (err error) {
	//创建一个Mes
	var mes message.Message
	mes.Type = message.SmsMesType

	//创建一个SmsMes实例
	var smsMes message.SmsGroupMes
	smsMes.Context = content //赋值内容

	smsMes.UserId = CurUser.UserId
	smsMes.UserStatus = CurUser.UserStatus

	//将smsMes序列化
	data, err := json.Marshal(smsMes)
	if err != nil {
		fmt.Println("SendGroupMes() smsMes json.Marshal err=", err)
		return
	}
	mes.Data = string(data)

	//对mes再次序列化
	data, err = json.Marshal(mes)
	if err != nil {
		fmt.Println("SendGroupMes() mes json.Marshal err=", err)
		return
	}
	
	//将mes发送给服务端
	tf := &utils.Transfer{
		Conn: CurUser.Conn,
	}
	err = tf.WritePkg(data)
	if err != nil {
		fmt.Println("SendGroupMes() tf.WritePkg err=", err)
		return
	}
	return
}